home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: delta
/
whiteline CD Series - delta.iso
/
progtool
/
modula2
/
module
/
druckebi.mod
< prev
next >
Wrap
Text File
|
1995-11-25
|
5KB
|
169 lines
IMPLEMENTATION MODULE DruckeBierListe;
FROM Strings IMPORT ClearStr,IsEmptyStr,EqualStr,LeftStr,SubStr,Length,
Concat,Compare,CompareResult;
FROM Bliste IMPORT List,AtFirst,AtLast,Empty,Next,Prev,AppendElement,Kunde,
First,MakeList,KillList,GetValue,SetValue,RemoveElement,
BubbleSort,VglProc,Last;
FROM InOut IMPORT WriteString,WriteLn,WriteInt,Done,
OpenOutput,CloseOutput;
FROM LongInOut IMPORT WriteLongInt,ReadLongInt;
FROM EdiereBierListe IMPORT ComputeCustomer,BierListe;
FROM PreisErfassung IMPORT DD,MM,JJ, VerkaufsPreis;
FROM AES IMPORT FormAlert;
FROM BlRscInc IMPORT RECHNUNG, BIEREN, NAMEN;
VAR Customer :Kunde;
PROCEDURE SortiereRechnung(K1,K2:Kunde):BOOLEAN;
BEGIN
RETURN K1.Rechnung>K2.Rechnung
END SortiereRechnung;
PROCEDURE SortiereNamen(K1,K2:Kunde):BOOLEAN;
VAR result:CompareResult;
BEGIN
result:=Compare(K1.Name,K2.Name);
RETURN result=less
END SortiereNamen;
PROCEDURE SortiereBierKonsum(K1,K2:Kunde):BOOLEAN;
BEGIN
RETURN K1.Biere>K2.Biere
END SortiereBierKonsum;
PROCEDURE SortiereBierListe(Nach:INTEGER);
VAR SortiereNach : VglProc;
BEGIN
IF Nach=RECHNUNG THEN
SortiereNach:=SortiereRechnung;
ELSIF Nach= BIEREN THEN
SortiereNach:=SortiereBierKonsum;
(*ELSIF Nach=NAMEN THEN*)
ELSE
SortiereNach:=SortiereNamen;
END(*IF*);
BubbleSort(BierListe,SortiereNach);
END SortiereBierListe;
PROCEDURE DruckOK():BOOLEAN;
VAR s: ARRAY [0..127] OF CHAR;
formret : INTEGER;
BEGIN
s :='[2][Druck in Ordnung?|Ja = Druck OK|Nein = Druck wiederholen][ Ja | Nein ]';
formret:=FormAlert(1,s);
RETURN formret=1
END DruckOK;
PROCEDURE PrintBierliste(Ordnen,LeerZeilen:INTEGER);
VAR OK :BOOLEAN;
Print2Screen :BOOLEAN;
i,j :INTEGER;
GesammtBetrag,Rechnung :LONGINT;
Bierstriche,Limostriche:INTEGER;
Alert : ARRAY [0..127] OF CHAR;
Formret :INTEGER;
PROCEDURE PrintCustomer;
BEGIN
WriteString('------------------|----------|--------------------------|--------------------|');
WriteLn;
WriteString(Customer.Name);
FOR i:= Length(Customer.Name) TO 17 DO
WriteString(' ');
END(*FOR*);
WriteString('|');
WriteLongInt((Customer.Rechnung DIV 100D),3);
WriteString('.');
WriteLongInt((Customer.Rechnung MOD 100D),2);
WriteString(' DM |');
WriteString(' | |');
WriteLn;
END PrintCustomer;
BEGIN
Alert:= '[3][Drucker nicht bereit !|Ausdruck auf Bildschirm!][ OK |Cancel]';
REPEAT
Print2Screen:=FALSE;
GesammtBetrag:=0; Bierstriche:=0;Limostriche:=0;
Rechnung:=0D;
First(BierListe);
LOOP
ComputeCustomer;
IF AtLast(BierListe) THEN
EXIT;
END(*IF*);
Next(BierListe);
END(*LOOP*);
SortiereBierListe(Ordnen);
First(BierListe);
OpenOutput('PRN:');
IF ~Done THEN
Formret:=FormAlert(1,Alert);
Print2Screen:=Formret=1;
END(*IF*);
IF (~Done AND Print2Screen) OR Done THEN
WriteString(' Abrechnung vom ');
WriteString(DD);WriteString('.');
WriteString(MM);WriteString('.');
WriteString('19');WriteString(JJ);
WriteString(' Gespeichert als :');WriteString(JJ);WriteString('_');WriteString(MM);
WriteString('_');WriteString(DD);WriteString('.DAT');
WriteLn;
WriteString(' ');
WriteString(' Bier'); WriteInt(VerkaufsPreis.BierPreis DIV 100,2);
WriteString('.');WriteInt(VerkaufsPreis.BierPreis MOD 100,2);
WriteString(' Limo ');WriteInt(VerkaufsPreis.LimoPreis DIV 100,2);
WriteString('.');WriteInt(VerkaufsPreis.LimoPreis MOD 100,2);WriteLn;
LOOP
OK:=GetValue(BierListe,Customer);
PrintCustomer;
IF AtLast(BierListe) THEN
EXIT;
END(*IF*);
Next(BierListe);
END(*LOOP*);
Customer.Name:='# ';
Customer.Rechnung:=0;
FOR j:=0 TO LeerZeilen DO
PrintCustomer;
END(*FOR*);
First(BierListe);
LOOP
OK:=GetValue(BierListe,Customer);
Rechnung:= Rechnung+ Customer.Rechnung;
Bierstriche:= Bierstriche+Customer.Biere;
Limostriche:= Limostriche+Customer.Limos;
GesammtBetrag:= GesammtBetrag+Customer.Uebertrag;
IF AtLast(BierListe) THEN EXIT END(*IF*);
Next(BierListe);
END(*LOOP*);
Customer.Name:='Aussenstände: ';
Customer.Uebertrag:=GesammtBetrag;
Customer.Biere:=Bierstriche;
Customer.Limos:=Limostriche;
Customer.Rechnung:=Rechnung;
PrintCustomer;
WriteString('Übertrag : '); WriteLongInt(GesammtBetrag DIV 100D,5);
WriteString('.'); WriteLongInt(GesammtBetrag MOD 100D,2);
WriteString(', Limos : '); WriteInt(Limostriche,4);
WriteString(', Biere : '); WriteInt(Bierstriche,4);WriteLn;
WriteString(12C);
IF Print2Screen THEN
WriteLn;
WriteString(' Bitte Esc drücken zur Wiederherstellung des Bildschirms ')
END(*IF*);
CloseOutput;
END(*IF*);
UNTIL DruckOK();
END PrintBierliste;
END DruckeBierListe.